package org.example.designPattern.factoryPattern1;


import org.example.designPattern.factoryPattern1.factory.TotalFactory;
import org.example.designPattern.factoryPattern1.service.Engine;
import org.example.designPattern.factoryPattern1.service.impl.TotalFactoryReally;

//工厂模式
//工厂模式是我们最常用的实例化对象模式了，是用工厂方法代替new操作的一种模式。
//利用工厂模式可以降低程序的耦合性，为后期的维护修改提供了很大的便利。
//将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
//常见的有:IOC
public class FactoryPattern1 {
    //简单工厂模式相当于是一个工厂中有各种产品，创建在一个类中，客户无需知道具体产品的名称，
    //只需要知道产品类所对应的参数即可。但是工厂的职责过重，而且当类型过多时不利于系统的扩展
    //维护。

    public static void main(String[] args) {
        //简单工厂
//        Car aodi = CarFactory.createCar("奥迪");
//        Car bmw =CarFactory.createCar("宝马");
//        aodi.run();
//        bmw.run();
        //工厂方法
//        Car aodi1 = new AoDiFactory().createCar();
//        Car jili1 = new BmwFactory().createCar();
//        aodi1.run();
//        jili1.run();
        //抽象工厂
//        TotalFactory totalFactory2 = new TotalFactoryReally();
//        Car car = totalFactory2.createChair();
//        car.run();
        TotalFactory totalFactory = new TotalFactoryReally();
        Engine engine = totalFactory.createEngine();
        engine.run();



    }


}
